package com.example.gitclient.model;

/**
 * Git文件信息类
 */
public class GitFile {
    /**
     * 文件状态枚举
     */
    public enum Status {
        UNTRACKED,  // 未跟踪
        ADDED,      // 已添加
        MODIFIED,   // 已修改
        DELETED     // 已删除
    }

    private String path;
    private Status status;
    private boolean staged;

    /**
     * 创建文件信息
     * @param path 文件路径
     * @param status 文件状态
     * @param staged 是否已暂存
     */
    public GitFile(String path, Status status, boolean staged) {
        this.path = path;
        this.status = status;
        this.staged = staged;
    }

    /**
     * 获取文件路径
     * @return 文件路径
     */
    public String getPath() {
        return path;
    }

    /**
     * 设置文件路径
     * @param path 文件路径
     */
    public void setPath(String path) {
        this.path = path;
    }

    /**
     * 获取文件状态
     * @return 文件状态
     */
    public Status getStatus() {
        return status;
    }

    /**
     * 设置文件状态
     * @param status 文件状态
     */
    public void setStatus(Status status) {
        this.status = status;
    }

    /**
     * 是否已暂存
     * @return 是否已暂存
     */
    public boolean isStaged() {
        return staged;
    }

    /**
     * 设置是否已暂存
     * @param staged 是否已暂存
     */
    public void setStaged(boolean staged) {
        this.staged = staged;
    }

    /**
     * 获取状态显示文本
     * @return 状态显示文本
     */
    public String getStatusText() {
        switch (status) {
            case UNTRACKED:
                return "未跟踪";
            case ADDED:
                return "已添加";
            case MODIFIED:
                return "已修改";
            case DELETED:
                return "已删除";
            default:
                return "未知";
        }
    }
}